//package yt.MajorClass.config;
//
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.http.HttpMethod;
//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
//import org.springframework.security.crypto.password.PasswordEncoder;
//import org.springframework.stereotype.Component;
//
///**
// * @author yt1105
// * @version 1.0
// */
//@Component
//@Configuration
//public class Security extends WebSecurityConfigurerAdapter {
//
//    @Bean
//    public PasswordEncoder getPw() {
//        return new BCryptPasswordEncoder();
//    }
//
//    @Override
//    protected void configure(HttpSecurity http) throws Exception {
//        //这里实现我们的自定义的登陆页面
//        http.formLogin().
//                loginProcessingUrl("/login").
//                //这个一定要和我们的login里面进行对应才行
//                //自定义的登陆界面
//                        loginPage("/login.html").
//                //这个是我们的登陆成功后的处理器 不能能和我们的successforwardurl重复 这个可以 这个是我们处理
//                //这里就可以实现我们的前后端分离的一个操作 我们可以直接进行我们的外站跳转
//                        successForwardUrl("/toMain").failureForwardUrl("/toError");// 这个是必须是post请求 所以说我们必须要借助controller做跳转
//        //这个是登陆失败后进行跳转页面请求 但是需要注意的是这个页面是post请求
//        // 我们需要在我们的controller里面重新进行书写一下
//        //登陆失败的处理器
////                .failureHandler(new MyAuthenticFailure("/error.html"));//当我们定义好
//        // 我们的handler之后 我们就可以不必借助我们的controller进行页面跳转 我们自己就可以进行跳转的实现
//        //这个必须是post请求
//
//
//        //授权认证
//        //所有的请求都必须登陆之后被访问(及时被无限的跳 我们的login.html也会被疯狂的跳转)
//        //我们的login.html不需要被验证了 这样才需要被放行
//        http.authorizeRequests().
//                //这里就是对我们的url进行权限认证
//                        antMatchers("/error.html").permitAll().//这个页面是不需要被认证的
//                antMatchers("/login.html").permitAll()
//                //但是这个只是会放行我们的这个目录下面的一些资源
//                //.antMatchers("/js/**", "/css/**", "/imgs/**").permitAll()
//
//                //这个参数就是我们的正则表达式(就是语法不一样而已 其他地方都是一样的)
////                .regexMatchers(".+[.]png").permitAll()
//                //这个是只要是png的都会进行放行 这个放行就是指的是不登录也能进行访问我们的数据
////                .antMatchers("/**/*.jpg").permitAll()
//                .antMatchers("/static/**").permitAll()
//                //这个是我们要进行放行 的位置 放行的是以get请求走的
//                .regexMatchers(HttpMethod.GET, "/demo").permitAll();
////                .antMatchers("/main1.html").hasAuthority("admin1")
////                .antMatchers("/main1.html").hasRole("abc")//这个是我们的角色的验证
//        //这个就算多个权限 哪怕我们就算只有其中一个 但是我们只要有其中一个就行能进行访问
////                .antMatchers("/main1.html").hasAnyRole("abc","aBc")//这个是我们的角色的验证
//        //这个是对我们的权限进行处理 就是都有权限 可以进行访问 只有我们的权限是这样的才行。
//        //这个是剩下就是都是需要进行认证，必须登陆之后被访问。
////                .anyRequest().authenticated();//加上这个之后我们的所有的接口都被禁止了
//
//        //防火墙 关闭我们的csrf的保护操作（这一套直接复制就行 不需要重写）
//        http.csrf().disable();
//    }
//}
